{extend name="layout" /}


{block name="title"}
<title>登录注册 - thinkPHP极速后台开发</title>
<meta name="title" content="登录注册 - thinkPHP极速后台开发">
<meta name="keywords" content="登录注册,php,后台开发包，thinkphp、easyadmin、admin,easy,thinkeasyadmin">
<meta name="description" content="登录注册,配置项目的登录注册页面,完善登录注册以及权限逻辑;easyadmin灵活可定制的thinkphp的后台开发工具包,助你快速开发后台">
{/block}

{block name="main"}
<fieldset class="layui-elem-field">
    <legend>登录注册 - <small>开箱即用</small></legend>
    <div class="layui-field-box">
        <p>系统默认集成了登录注册和简易的权限管理系统</p>
        <p>安装好以后即可直接使用</p>
        <p>也是足够灵活扩展的</p>
        <p>下面详细说明</p>
    </div>
</fieldset>
<blockquote class="layui-elem-quote">
    需要给当前应用目录写入的权限; <br>
    例如是 admin 模块,就需要 给 project\app\admin\ 目录写入权限
</blockquote>


<fieldset class="layui-elem-field">
    <legend>数据库表结构</legend>
    <div class="layui-field-box">
                    <pre class="mysql">
CREATE TABLE IF NOT EXISTS `manage` (
  `id` int(10) UNSIGNED NOT NULL AUTO_INCREMENT,
  `username` varchar(55) NOT NULL COMMENT '账号',
  `password` varchar(255) NOT NULL COMMENT '密码',
  `reg_time` int(10) UNSIGNED DEFAULT NULL COMMENT '注册时间',
  `last_login_time` int(10) UNSIGNED DEFAULT NULL COMMENT '最后登录时间',
  `user_role` text COMMENT '用户角色 数组序列化',
  PRIMARY KEY (`id`),
  KEY `username` (`username`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4
</pre>
        <p>以上字段是必须的</p>
        <p>业务上面有其他的需求,自己扩展数据字段就好了</p>
    </div>
</fieldset>

<blockquote class="layui-elem-quote">
    如果一直提示验证码错误; <br>
    由于默认 session 是采用文件存储,session 是存储在 project\runtime\session 目录中; 所以需要 给 project\runtime\ 目录写入权限
</blockquote>
<fieldset class="layui-elem-field">
    <legend>控制器</legend>
    <div class="layui-field-box">
                    <pre class="php">
#project\app\admin\controller\Login.php

namespace app\admin\controller;


/**
 * 登录注册相关路由控制器
 * 直接继承 \easyadmin\controller\Login
 * Class Login
 * @package app\admin\controller
 */
class Login extends \easyadmin\controller\Login
{
}

#--------------------------------------------------
#- 分割线 ------------------------------------------
#--------------------------------------------------

#project\app\admin\controller\Manage.php

namespace app\admin\controller;

 /**
 * 管理员列表相关路由控制器
 * 内部实现了增删改查,权限控制
 * 可直接在里面扩展自己的业务
 * Class Manage
 * @package app\admin\controller
 */
class Manage extends Admin
{
}

</pre>
    </div>
</fieldset>


<fieldset class="layui-elem-field">
    <legend>相关配置</legend>
    <div class="layui-field-box">
                    <pre class="php">
#project\app\admin\config\login.php



// +----------------------------------------------------------------------
// | 登录注册相关配置
// +----------------------------------------------------------------------

return [

    // 开启登陆注册
    'enable_login'=> true ,

    // 数据库表名
    'table_name' => env('manage_table_name', 'manage'),

    // 是否开放注册
    'register' => env('manage_register', true),

    // 是否启用密码找回
    'find_password' => env('manage_find_password', true),

    // 密码加密的盐
    'crypt_salt' => env('manage_crypt_salt', 'easy_admin'),

    // 后台首页管理地址
    'home_url' => env('manage_home_url', '/admin/index/index'),

    // 后台登录地址
    'login_url' => env('manage_login_url', '/admin/login/login'),

    // 无权访问拦截地址
    'no_access_url' => env('manage_login_url', '/admin/login/no_access'),

    // 路由访问限制
    // 如果配置一个 空数组, 表示不验证权限,直接访问
    //
    // anonymous 表示可用匿名访问, 不登录
    // login     表示登录后可用访问
    // other     表示需要指定的权限可以访问 (直接写自己定义的权限名称)
    //
    'rules' => [
        '^/admin/*' => 'login',
        '^/admin/login/.*' => 'anonymous',

        // 为了方便演示,首页不用登录,其他页面都需要登录
        '^/admin/index/' => 'anonymous',

        // ... 其他路由规则
    ]

];
</pre>
    </div>
</fieldset>


<fieldset class="layui-elem-field">
    <legend>常用方法</legend>
    <div class="layui-field-box">
        <pre class="php">

// 判断当前登录用户是否有某一个权限
User::getInstance()->hasRole('role_super');

// 判断当前登录用户的全部权限
User::getInstance()->getRoles();

// 设置当前登录用户的权限 传递一个一维数组
User::getInstance()->setRoles($roles);

// 添加当前登录用户的权限 传递一个字符串
User::getInstance()->addRole($roles);

// 生成一个加密的密码
User::getInstance()->encrypt('登录账号', '登录密码');

// 保存用户信息到 缓存
User::getInstance()->save($user);

// 获取当前登录用户的用户ID
User::getInstance()->getUserId();

// 获取当前登录用户的全部信息
User::getInstance()->getUser();

// 清空当前登录用户的全部信息
User::getInstance()->clear();

</pre>

    </div>

</fieldset>

{/block}


